System.Collections.ObjectModel.KeyedCollection<TKey,TItem>.ChangeItemKey method

This article provides supplementary remarks to the reference documentation for this API.

The ChangeItemKey(TItem, TKey) method does not modify the key embedded in item; it simply replaces the key saved in the lookup dictionary. Therefore, if newKey is different from the key that is embedded in item, you cannot access item by using the key returned by GetKeyForItem.

This method does nothing if the KeyedCollection<TKey,TItem> does not have a lookup dictionary.

Every key in a KeyedCollection<TKey,TItem> must be unique. A key cannot be null.

This method is an O(1) operation.

Notes for implementers

Before modifying the key embedded in an item, you must call this method to update the key in the lookup dictionary. If the dictionary creation threshold is -1, calling this method is not necessary.

Do not expose the ChangeItemKey method as a public method of a derived class. Misuse of this method puts the lookup dictionary out of sync with item keys. For example, setting the key to null and then setting it to another value adds multiple keys for an item to the lookup dictionary. Expose this method internally to allow mutable item keys: When the key for an item changes, this method is used to change the key in the lookup dictionary.